package cn.teleware.api.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.List;

/**
 * @author : hongsw
 * @date : 2020-11-12-12:35
 * @descriptions :
 */
@Configuration
public class WebConfiguration implements WebMvcConfigurer {
    /**
     * 【解决】全局统一响应体中 beforeBodyWrite方法中Object类型的参数为String类型时，出现java.lang.ClassCastException
     * 【原因】
     * 因为在所有的 HttpMessageConverter 实例集合中
     * StringHttpMessageConverter 要比其它的 Converter 排得靠前一些
     * 我们需要将处理 Object 类型的 HttpMessageConverter 放得靠前一些
     *
     * @param converters 信息转换器
     * @author hongsw
     * @date 2020/11/12 12:41
     **/
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(0, new MappingJackson2HttpMessageConverter());
    }
}
